# 导入gradio库
import gradio as gr # 网页界面
import requests     # 网络请求库

# 编写交互逻辑（函数）
def mock_deepseek(question):
    print(question)
    return f"接收到问题：{question} 大模型回复：我是你的专属人工智能（开发中）"

def deepseek(question):
    url = "https://api.siliconflow.cn/v1/chat/completions"  # 大模型的访问网址

    payload = {     # 负载信息，包含了要传输的数据
        "model": "Pro/Qwen/Qwen2.5-7B-Instruct",
        "stream": False,
        "max_tokens": 512,
        "enable_thinking": True,
        "thinking_budget": 4096,
        "min_p": 0.05,
        "temperature": 0.7,
        "top_p": 0.7,
        "top_k": 50,
        "frequency_penalty": 0.5,
        "n": 1,
        "stop": [],
        "messages": [
            {
                "role": "user",
                "content": question     # 问题写在这里
            }
        ]
    }
    headers = {     # 请求头 包含你的身份信息
        "Authorization": "Bearer sk-wwrrugogaqovrdrabgwlbomhojdcgoeynjrmdayfeijgphyz",
        "Content-Type": "application/json"
    }
    # 发起请求
    response = requests.request("POST", url, json=payload, headers=headers)

    # print(response.text)

    # 提取大模型的回答
    # 思路：1、获取choices的内容；2、choices的内容是【列表】类型；
    # 3、取列表中的第0个元素；4、取出来的是【字典】类型；
    # 5、获取【message】键的内容；6、取出来的是【字典】类型
    # 7、获取【content】键的内容
    result = response.json().get("choices")[0].get("message").get("content")
    return result

# 使用gradio库构建网页
demo = gr.Interface(
    fn=mock_deepseek,        # 函数名
    inputs="text",
    outputs="text"
)

demo.launch()      # 0.0.0.0代表广播， 127.0.0.1代表本地ip